const uniID = require('uni-id-common')

exports.main = async (event, context) => {
	let body = event;
	if (event.body != undefined) {
		body = JSON.parse(event.body)
	}
  const uniIDIns = uniID.createInstance({ context })

  try {
    // 1. 身份验证
    const { uid } = await uniIDIns.checkToken(body.uniIdToken)
    if (!uid) {
      return { code: 403, msg: '身份验证失败' }
    } 

    const db = uniCloud.database()
    
    // 2. 如果传入了 status，则更新身份
    if (body.status !== undefined) {
      if (![1, 2].includes(body.status)) {
        return { code: 400, msg: '无效的身份选项' }
      }
      await db.collection('uni-id-users').doc(uid).update({
        is_consultant: body.status
      })
      return { code: 0, msg: '身份更新成功', isConsultant: body.status }
    }

    // 3. 查询用户数据，并包括 profileCompleted 字段
    const userRes = await db.collection('uni-id-users')
      .doc(uid)
      .field({ is_consultant: 1, profileCompleted: true }) // 加入 profileCompleted 字段
      .get()
	  console.log("数据库返回数据:", userRes.data);

    // 4. 处理字段不存在的情况
    if (!userRes.data.length || !userRes.data[0].hasOwnProperty('is_consultant')) {
      await db.collection('uni-id-users').doc(uid).update({
        is_consultant: 0 // 0 代表未选择身份
      })
      return { code: 0, msg: '字段不存在，已初始化为未选择身份', isConsultant: 0, profileCompleted: false }
    }

    // 5. 返回当前身份和 profileCompleted 字段
    return { 
      code: 0, 
      isConsultant: userRes.data[0].is_consultant || 0,
      profileCompleted: userRes.data[0].profileCompleted || false // 返回 profileCompleted 字段
    }
  } catch (e) {
    return { code: 500, msg: '服务器错误', detail: e }
  }
}
